package ptoVenta;

import java.io.*;
import java.net.*;
import java.util.logging.*;
import java.sql.*;
import java.util.Calendar;

/**
 *
 * @author kirby joel del toro reyes
 */
public class Hilo extends Thread {

    private Socket socket;
    private DataOutputStream salida;//dos
    private DataInputStream entrada;//dis
    Calendar cal = Calendar.getInstance();
    String fecha = cal.get(cal.YEAR) + "/" + cal.get(cal.MONTH) + "/" + cal.get(cal.DATE);
    String hora = cal.get(cal.HOUR_OF_DAY) + ":" + cal.get(cal.MINUTE) + ":" + cal.get(cal.SECOND);

    public Hilo(Socket socket, int id) {
        this.socket = socket;
        try {
            salida = new DataOutputStream(socket.getOutputStream());
            entrada = new DataInputStream(socket.getInputStream());
        } catch (IOException ex) {
            Logger.getLogger(Hilo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void desconnectar() {
        try {
            socket.close();
        } catch (IOException ex) {
            Logger.getLogger(Hilo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void venta(String id_producto, int inCant) {
        try {
            Connection Conexion = DriverManager.getConnection("jdbc:postgresql://localhost:5432/punto_venta", "postgres", "12345");
            if (id_producto == "pro_001") {
                //PreparedStatement consultasql = Conexion.prepareStatement("insert into venta values('" + id_producto + "', 'garrafon rellenable', " + inCant + ", 6,'" + fecha + "')");
                PreparedStatement consultasql = Conexion.prepareStatement("update venta set cantidad_producto = cantidad_producto-" + inCant + ", producto_vendido = producto_vendido + " + inCant + ", fecha_compra= '" + fecha + "' where id_producto='pro_001';");
                ResultSet resultadosql = consultasql.executeQuery();
                consultasql.close();
                Conexion.close();
            } else if (id_producto == "pro_002") {
                //PreparedStatement consultasql = Conexion.prepareStatement("insert into venta values('" + id_producto + "', 'garrafon retornable', " + inCant + ", 10,'" + fecha + "')");
                PreparedStatement consultasql = Conexion.prepareStatement("update venta set cantidad_producto = cantidad_producto-" + inCant + ", producto_vendido = producto_vendido + " + inCant + ", fecha_compra='" + fecha + "' where id_producto='pro_002';");
                ResultSet resultadosql = consultasql.executeQuery();
                consultasql.close();
                Conexion.close();
            }
            if (id_producto == "pro_003") {
                //PreparedStatement consultasql = Conexion.prepareStatement("insert into venta values('" + id_producto + "', 'garrafon nuevo', " + inCant + ", 50,'" + fecha + "')");
                PreparedStatement consultasql = Conexion.prepareStatement("update venta set cantidad_producto = cantidad_producto-" + inCant + ", producto_vendido = producto_vendido + " + inCant + ", fecha_compra='" + fecha + "' where id_producto='pro_003';");
                ResultSet resultadosql = consultasql.executeQuery();
                consultasql.close();
                Conexion.close();
            }
        } catch (SQLException ex) {
        }
    }

    @Override
    public void run() {
        String stOp = "";
        String stCantidad = "";
        int inTot = 0;
        String stTotal = "";
        String id_producto = "";

        try {

            stOp = entrada.readUTF();
            int inOp = Integer.parseInt(stOp);
            System.out.println("recibi op= " + inOp);
            stCantidad = entrada.readUTF();
            int inCant = Integer.parseInt(stCantidad);
            switch (inOp) {
                case 1:
                    id_producto = "pro_001";
                    inTot = 6 * inCant;
                    salida.writeUTF(stTotal = Integer.toString(inTot));
                    System.out.println("tota = " + stTotal);
                    venta(id_producto, inCant);
                    break;
                case 2:
                    id_producto = "pro_002";
                    inTot = 10 * inCant;
                    salida.writeUTF(stTotal = Integer.toString(inTot));
                    System.out.println("tota = " + stTotal);
                    venta(id_producto, inCant);
                    break;
                case 3:
                    id_producto = "pro_003";
                    inTot = 50 * inCant;
                    salida.writeUTF(stTotal = Integer.toString(inTot));
                    System.out.println("tota = " + stTotal);
                    venta(id_producto, inCant);
                    break;
                default:
                    System.out.println("VENTA INCORRECTA");
                    break;
            }
        } catch (IOException ex) {
            Logger.getLogger(Hilo.class.getName()).log(Level.SEVERE, null, ex);

        }
        desconnectar();
    }//fin RUN
}//fin class Hilo (Thread)